package cn.jy.map.mapper;

import java.util.Date;
import java.util.List;
import java.util.Map;

import org.apache.ibatis.annotations.Param;

import cn.jy.map.domain.AddressJwdMsg;
import cn.jy.map.domain.GjzDzJwd;
import cn.jy.map.domain.GjzLc;
import cn.jy.map.domain.ProviderType;

public interface GjzDzJwdMapper {
	
	void addGjzDzJwd(GjzDzJwd gjzDzJwd);
	void updateGjzDzJwd(GjzDzJwd gjzDzJwd);

	/**
	 * 如果date不为null，则获取指定日期建档的浆员
	 * 如果date 为null，则获取全部浆员
	 * 如果providerNoList 不为null，除开这些浆员
	 * @param date
	 * @param providerNoList
	 * @return
	 */
	List<AddressJwdMsg> getAddressJwdMsg(@Param("date")String date,@Param("providerNos")String providerNoList);
	/**
	 * 根据地址获取这个地址下面的经纬度信息
	 * @param address
	 * @return
	 */
	AddressJwdMsg getJwdByAddress(@Param("address")String address);
	
	List<AddressJwdMsg> getRegist(@Param("date")String date);
	/**
	 * 获取指定浆员的地址集合，根据浆员卡号集合
	 * @return
	 */
	List<String> getDzJwdByProviderNo(@Param("list")List<String> providerNoList);
	
	/**
	 * 获取这个日期内，在第一个体检前登记的浆员
	 * @param date
	 * @param endtime ：第一个浆员体检的时间，作为这里的结束时间
	 * @return
	 */
	List<AddressJwdMsg> getRegistBetweenBodyCheck(@Param("date")String date,@Param("endtime")String endtime);
	/**
	 * 获取指定浆员的经纬度，根据浆员卡号集合
	 * @return
	 */
	List<AddressJwdMsg> getAddJwdByProviderNo(@Param("list")List<String> providerNoList);
	
	/**
	 * 通过身份证，获取这个人的经纬度信息
	 * @param cardNo
	 * @return
	 */
	GjzDzJwd getGjzJwdByCardNo(@Param("cardNo")String cardNo);
	
	/**
	 * 获取最早开始体检的时间
	 * @param date
	 * @return
	 */
	Map<String,Date> getMinBodyCheckTime(@Param("date")String date);
	/**
	 * 获取最早开始登记的时间 + 20分钟
	 * @param date
	 * @return
	 */
	Map<String,Date> getMinRegistTime(@Param("date")String date);
	
	/**
	 * 获取指定村落所有的浆员卡号列表
	 * @param villageName
	 */
	List<String> getAllProviderNoByAddress(@Param("villageName")String villageName,@Param("date")String date);
	
	/**
	 * 获取指定日期进站的所有浆员
	 * @param date
	 */
	List<String> getAllProviderNoByDate(@Param("date")String date);
	/**
	 * 获取所有的身份证地址，补全码表
	 * @return
	 */
	List<GjzDzJwd> getGjzDzjwdAdress();
	
	List<String> getGjzDzjwdProviderNo(Map<String,String> map);
	
	List<String> getAdress();
	/**
	 * 根据村落名字查询浆员类型人数
	 */
	public List<ProviderType> getProviderTypes(@Param("villageName")String villageName);
}
